Programmable logic devices are available for implementing any of a wide variety of logic designs. The user designs a logic circuit, and uses software to direct a computer to program a logic device or to design a set of masks to implement the desired logic design. Timing of signals passed between parts of the logic device depends in part upon placement of the user's circuit elements into transistor groups in the physical structure and the resultant arrangement of the metal wires. In general, longer wires mean longer delays, the actual timing depending upon capacitances, resistances, and the number of logic elements a signal must traverse. As transistors have become faster, a larger percentage of the delay in passing a signal through the device is contributed by the wiring. Therefore it has become a worthwhile effort to select wiring segments carefully to minimize the delay caused by these wiring segments.
Logic devices which can be programmed using the method of the present invention include both mask and field programmable devices. Mask programable devices are programmed at the factory when the device is being manufactured, and field programmable devices are programmed by the user after purchasing the completed device. Mask programmable devices include gate array structures which have an array of transistor groups formed in the substrate of an integrated circuit, and typically a layer of control gates formed in a layer above the substrate. Above these standard layers are formed personality layers, usually two or three layers of metallization, which interconnect the transistors to create a circuit desired by a customer.
Field programmable devices include programmable logic array (PLA) devices and field programmable gate array (FPGA) devices. PLA devices generally comprise an array of AND gates which provides input to an array of OR gates, and thereby implement logic which is stated as a sum of products. FPGA devices include a plurality of logic blocks or modules connected together by programmable interconnect lines. The programmable blocks can be programmed to implement multiple functions, and the programmable interconnect can be connected together in a wide variety of ways to produce an overall structure which implements the user's design. The detailed description below uses an FPGA in its description; therefore, an FPGA structure will be described in more detail here.